package cn.outsourcing.supermarket.service;

import cn.outsourcing.supermarket.common.PageResult;
import cn.outsourcing.supermarket.dto.backstage.*;
import cn.outsourcing.supermarket.vo.backstage.BackstageOrdersDetailVO;
import cn.outsourcing.supermarket.vo.backstage.BackstageOrdersInfoVO;

import java.util.List;

/**
 * 后台订单信息
 *
 * @author gzkemays
 * @since 2021/11/3 1:57
 */
public interface BackstageOrderService {
  /**
   * 获取订单数据
   *
   * @param infoDTO 订单查询条件
   * @return 订单信息
   */
  PageResult<BackstageOrdersInfoVO> getOrdersInfo(BackstageOrdersInfoDTO infoDTO);

  /**
   * 修改订单信息时获取的订单详情
   *
   * @param ordersId 订单 id
   * @return 返回对象交付于前端计算
   */
  BackstageOrdersDetailVO getOrdersDetail(Integer ordersId);

  /**
   * 修改订单价格
   *
   * @param dto 修改信息
   * @return 是否修改成功
   */
  Object editPrice(BackstageEditOrderPriceDTO dto);

  /**
   * 改变订单状态
   *
   * @param dto 改变的状态
   * @return 是否改变成功
   */
  int changeStatus(BackstageChangeStatusDTO dto);

  /**
   * 改变商品数据
   *
   * @param dto 商品数据
   * @return 改变成功后返回 sn 码
   */
  String saveGoodsList(BackstageSaveGoodsListDTO dto);

  /**
   * 发货
   *
   * @param dto 订单 id
   * @return 是否更新成功
   */
  int goDelivery(BackstageDeliveryDTO dto);

  /**
   * 获取用户的订单
   *
   * @param dto 用户id和页数
   * @return 用户订单列表
   */
  PageResult<BackstageOrdersInfoVO> userOrder(BackstageOnlyIdPageDTO dto);
}
